downloadVariantJsonsHttps
- ๐ฌ๐ง English
- ๐ฎ๐น Italian
Function Name: downloadVariantJsonsHttp
Author: Domenico Cerone Creation Date: 02/10/2025
Last Reviewer: Domenico Cerone
Trigger: HTTPS (onRequest)
Purpose: Manages the download of product data and automatic generation of Excel reports for optical products from the Safilo catalog. Processes SKUs with result='Orderable', downloads JSON data and images, generates Excel reports, and automatically sends quotation request emails to administrators.
Detailed Functionalityโ
This Firebase Function performs a comprehensive data processing workflow for product catalogs:
1. CATALOG DATA RETRIEVALโ
- Receives catalog order ID from HTTP request
- Retrieves document from 'CatalogOrders' Firestore collection
- Utilizes Firebase Storage bucket 'arshades-7e18a.appspot.com'
2. SKU EXTRACTIONโ
- Filters only elements with result = 'Orderable' (regardless of isSelected value)
- Extracts SKU codes from filtered elements
- Removes duplicates to avoid multiple processing
3. BATCH PROCESSINGโ
- Processes SKUs in batches of 20 elements to optimize performance
- Each batch is processed in parallel for maximum efficiency
- Implements 200ms delay between API calls to avoid overload
4. JSON DOWNLOAD AND MANAGEMENTโ
- NEW API:
https://commportal-api.safilo.com/damAPI/damitems/AUTH.../spaarkly.getModels?sizeCode={sku} - Checks existence in Storage:
ARS_Library_Product_Data/{skuCode}/json/{skuCode}.json - If not exists: downloads, saves temporarily, uploads to Storage with UUID token
- If exists: uses existing file to extract image parameters
5. IMAGE DOWNLOAD AND OPTIMIZATIONโ
- Extracts modelCode, colorCode, lensCode from JSON for each SKU
- Downloads 2 images (detail=00 frontal, detail=04 lateral)
- API:
https://safilo-pd-cdn002.safilo.com/damapi/damimage/public/sfcc.getimagenofb - Optimizes images: resizes to 120x120px, JPEG quality 90%, progressive format
- Fallback: Sharp โ Jimp โ original buffer
- Storage:
ARS_Library_Product_Data/{skuCode}/thumbnail/{modelCode}_{colorCode}_{lensCode}_{detail}.jpg
6. AUTOMATIC EXCEL REPORT GENERATIONโ
- Always generates Excel report automatically at the end of processing
- Includes: skuCode, Style Description, frontal image (00), lateral image (04)
- ENHANCED IMAGE HANDLING:
- Downloads images from URLs (Firebase Storage or API) into memory for each call
- Uses
downloadImageToBufferfunction to get image buffer - Implements complete validity checks: URL, status code, content-type, buffer size
- Detailed logging to track every phase of download and conversion
- Robust error handling with complete diagnostic information
- Even when images are already present in Storage (skipped), they are downloaded again for Excel inclusion
- Optimizes images with Sharp/Jimp (120x120px, JPEG 90%)
- Creates Excel with ExcelJS: 4 columns (SKU, Description, Img00, Img04)
- Cell dimensions: width 18-30 units, height 75 points
- PERFECT IMAGE CENTERING: Uses exact coordinates for perfect centering
- Bold headers, fixed row height
- Saves Excel to Storage:
Orders/{orderId}/Orders-orderid-report.xlsx - Generates UUID token for public access
- AUTOMATIC CLEANUP: Deletes all temporary files (Excel and images) after processing
7. ENHANCED API ERROR HANDLINGโ
- NEW LOGIC: Image errors no longer cause complete order failure
- Detects errors during API calls (JSON and images)
- JSON ERRORS: Still cause order failure (status "error") - these are critical
- IMAGE ERRORS: Only cause individual SKU failure, order continues processing
- Adds "status" field with value "Failed - API json/images" ONLY to individual SKUs with errors
- Order status remains "processing_addition" and updates to "completed" at the end
- SPECIFIC HTTP 410 (Gone) HANDLING:
- Error 410 indicates image no longer available on Safilo server
- Not considered critical system error, only resource unavailability
- Processing continues normally for other SKUs
- Statistics distinguish between technical errors (failed) and unavailable images (unavailable)
- Excel report is still generated with empty cells for unavailable images
- ERROR TYPES TRACKED:
- JSON_API_ERROR: Critical errors during JSON download (causes order failure)
- IMAGE_API_ERROR: Non-critical image download errors (individual SKU only)
- IMAGE_NOT_AVAILABLE: Images no longer available (HTTP 410)
- IMAGE_PROCESSING_ERROR: Non-critical image processing errors
- MISSING_IMAGE_PARAMS: Missing image parameters in JSON data (non-critical)
- BATCH_PROCESSING_ERROR: Errors during batch processing
- EXCEL_GENERATION_ERROR: Errors during Excel report generation
- ORDER_UPDATE_ERROR: Errors during order update
- GENERAL_ERROR: Uncategorized general errors
8. AUTOMATIC QUOTATION REQUEST EMAILโ
- ENHANCED: Automatically sends quotation request email when Excel report is generated successfully
- SENDING CONDITIONS: Email is sent in ALL these cases:
- Successful processing (status "completed") AND Excel generated
- Processing completed with image errors (status "completed") AND Excel generated
- Processing failed with critical JSON errors (status "error") BUT Excel still generated
- General errors during processing BUT Excel generated before error
- NO EMAIL SENT: If Excel is not generated (e.g., no data, critical errors)
- TWO DISTINCT EMAILS SENT:
- Administrator email:
- Template key:
13ef.8598f19fbcc5adb.k1.e8a28620-50ea-11f0-9c4e-dad70ff08860.197a19bc782 - Recipients: ALL users with role='Admin' from Profiles collection
- Merge data: formatted timestamp data and full name of ordering user
- Attachment: Excel file downloaded from Storage URL and converted to base64
- Template key:
- User confirmation email:
- Template key:
13ef.8598f19fbcc5adb.k1.9337a850-5e23-11f0-9e15-dad70ff08860.197f8418755 - Recipient: user who made the request (profile field from CatalogOrders)
- Merge data: full user name (e.g., "Michele Telesca") or email if name unavailable
- Message: "Hello {{profile}}, Request for quotation sent successfully!"
- Sent immediately after admin email to confirm request to user
- NO attachments, only confirmation of successful request
- Template key:
- Administrator email:
- Uses sendQuotationRequestEmailHttp function for ZeptoMail sending
- Robust error handling: If email sending fails, it's logged but doesn't interrupt process
- No admin found: Email not sent if no administrators found (NO_ADMIN_FOUND error)
- Detailed logging: Tracks every phase of email sending and administrator count
9. EXCEL REPORT URL SAVING IN CATALOGORDERSโ
- NEW FEATURE: When Excel report is generated successfully, the system automatically saves the file information directly in the CatalogOrders document on Firestore
- Field added to document:
excelReportUrl: Complete public URL for direct Excel file downloadexcelReportFileName: Name of the generated Excel file
- Saving occurs in ALL cases:
- Successful processing (along with status "completed")
- Processing completed with image errors (along with status "completed")
- Processing failed with critical JSON errors (along with status "error")
- General errors during processing (if Excel was generated before error)
- Benefits:
- Frontend can easily retrieve the report link directly from the order document
- No need to reconstruct the URL
- Link remains valid and accessible even after processing completion
- Consistent data storage for future reference
Technical Featuresโ
- TIMEOUT: 540 seconds (9 minutes) for long processing
- MEMORY: 1GiB to handle images and Excel files
- REGION: europe-central2 for optimal performance
- CORS: Enabled for frontend calls
- ERROR HANDLING: Detailed logging, robust fallbacks, response with errorDescription
- OPTIMIZATION: Parallel calls, intelligent cache, batch processing
- SECURITY: UUID tokens for controlled file access
- FORMAT: Excel XLSX with embedded images, professional layout
Storage Structureโ
ARS_Library_Product_Data/
โโโ {skuCode}/
โ โโโ json/
โ โ โโโ {skuCode}.json
โ โโโ thumbnail/
โ โโโ {modelCode}_{colorCode}_{lensCode}_00.jpg
โ โโโ {modelCode}_{colorCode}_{lensCode}_04.jpg
โโโ Orders/
โโโ {orderId}/
โโโ Orders-orderid-report.xlsx
Input (Payload):โ
{
"orderId": "xq02X2a6CEFVoQtZd5Pa"
}
Parameters:
orderId(string, required): ID of the catalog order document in the 'CatalogOrders' collection
Output (Success):โ
{
"success": true,
"message": "Processing completed: 5 new JSONs, 2 existing JSONs, 0 failed. Images: 8 new, 4 existing, 2 failed. 1 images not available on server (HTTP 410).",
"stats": {
"totalItems": 7,
"processedItems": 7,
"json": {
"new": 5,
"skipped": 2,
"failed": 0
},
"images": {
"new": 8,
"skipped": 4,
"failed": 2,
"unavailable": 1
},
"hasApiError": false,
"skusWithCriticalErrors": 0
},
"excelReport": {
"fileName": "Orders-xq02X2a6CEFVoQtZd5Pa-report.xlsx",
"downloadUrl": "https://firebasestorage.googleapis.com/v0/b/arshades-7e18a.appspot.com/o/Orders%2Fxq02X2a6CEFVoQtZd5Pa%2FOrders-xq02X2a6CEFVoQtZd5Pa-report.xlsx?alt=media&token=uuid-token",
"token": "uuid-token"
}
}
Response Properties:
success(boolean): Indicates if the operation was completed successfullymessage(string): Descriptive message of the processing resultsstats(object): Detailed statistics of processed itemstotalItems(number): Total number of SKUs to processprocessedItems(number): Number of SKUs actually processedjson(object): JSON download statistics (new, skipped, failed)images(object): Image download statistics (new, skipped, failed, unavailable)hasApiError(boolean): Indicates if there were critical API errorsskusWithCriticalErrors(number): Number of SKUs with critical errorsskusWithImageErrors(number): Number of SKUs with image errors (non-critical)
hasApiError(boolean): Global flag indicating if there were any API errorserrorDescription(string|null): General description of errors if any occurrederrorDetails(array): Array with specific error details for each error typeexcelReport(object): Excel report informationfileName(string): Name of the generated Excel filedownloadUrl(string): Public URL for Excel file downloadtoken(string): UUID token for file access
This output is returned in the HTTP response (Postman, browser, curl).
Testingโ
URL (if HTTPS): http://127.0.0.1:5001/arshadesstaging/europe-central2/downloadVariantJsonsHttp
Test with Emulator:
- Start the Firebase emulator:
firebase emulators:start --only functions - Ensure you're using Node.js version 20:
nvm use 20 - Test with curl:
curl -X POST "http://127.0.0.1:5001/arshadesstaging/europe-central2/downloadVariantJsonsHttp" \
-H "Content-Type: application/json" \
-d '{"orderId": "xq02X2a6CEFVoQtZd5Pa"}'
Postman Testing:
- Method: POST
- URL: http://127.0.0.1:5001/arshadesstaging/europe-central2/downloadVariantJsonsHttp
- Headers:
- Key:
Content-Type - Value:
application/json
- Key:
- Body: raw JSON (see examples above)
Deploy Command:โ
firebase deploy --only functions:downloadVariantJsonsHttp
Production URL:โ
downloadVariantJsonsHttp: https://europe-central2-arshades-7e18a.cloudfunctions.net/downloadVariantJsonsHttp
Function Name: downloadVariantJsonsHttp
Autore: Domenico Cerone Data di creazione: 02/10/2025
Last Reviewer: Domenico Cerone
Trigger: HTTPS (onRequest)
Purpose: Gestisce il download di dati prodotto e la generazione automatica di report Excel per prodotti dal catalogo Safilo. Elabora SKU con result='Orderable', scarica dati JSON e immagini, genera report Excel e invia automaticamente email di richiesta quotazione agli amministratori.
Funzionamento Dettagliatoโ
Questa Firebase Function esegue un flusso di elaborazione dati completo per cataloghi di prodotti:
1. RECUPERO DATI CATALOGOโ
- Riceve l'ID dell'ordine del catalogo dalla richiesta HTTP
- Recupera il documento dalla collezione 'CatalogOrders' di Firestore
- Utilizza il bucket Firebase Storage 'arshades-7e18a.appspot.com'
2. ESTRAZIONE SKUโ
- Filtra solo gli elementi con result = 'Orderable' (indipendentemente dal valore di isSelected)
- Estrae i codici SKU dagli elementi filtrati
- Rimuove duplicati per evitare elaborazioni multiple
3. ELABORAZIONE BATCHโ
- Processa gli SKU in batch di 20 elementi per ottimizzare le performance
- Ogni batch viene elaborato in parallelo per massimizzare l'efficienza
- Implementa delay di 200ms tra chiamate API per evitare sovraccarico
4. DOWNLOAD E GESTIONE JSONโ
- NUOVA API:
https://commportal-api.safilo.com/damAPI/damitems/AUTH.../spaarkly.getModels?sizeCode={sku} - Verifica esistenza in Storage:
ARS_Library_Product_Data/{skuCode}/json/{skuCode}.json - Se non esiste: scarica, salva temporaneamente, carica su Storage con token UUID
- Se esiste: utilizza il file esistente per estrarre parametri immagini
5. DOWNLOAD E OTTIMIZZAZIONE IMMAGINIโ
- Estrae modelCode, colorCode, lensCode dal JSON per ogni SKU
- Scarica 2 immagini (detail=00 frontale, detail=04 laterale)
- API:
https://safilo-pd-cdn002.safilo.com/damapi/damimage/public/sfcc.getimagenofb - Ottimizza le immagini: ridimensiona a 120x120px, qualitร JPEG 90%, formato progressivo
- Fallback: Sharp โ Jimp โ buffer originale
- Storage:
ARS_Library_Product_Data/{skuCode}/thumbnail/{modelCode}_{colorCode}_{lensCode}_{detail}.jpg
6. GENERAZIONE REPORT EXCEL AUTOMATICAโ
- Genera SEMPRE automaticamente il report Excel alla fine dell'elaborazione
- Include: skuCode, Style Description, immagine frontale (00), immagine laterale (04)
- GESTIONE IMMAGINI MIGLIORATA:
- Scarica immagini dalle URL (Firebase Storage o API) in memoria per ogni chiamata
- Utilizza la funzione
downloadImageToBufferper ottenere il buffer dell'immagine - Implementa controlli di validitร completi: URL, status code, content-type, dimensione buffer
- Logging dettagliato per tracciare ogni fase del download e conversione
- Gestione robusta degli errori con informazioni diagnostiche complete
- Anche quando le immagini sono giร presenti in Storage (skipped), vengono scaricate nuovamente per l'inclusione nell'Excel
- CENTRATURA PERFETTA: Utilizza coordinate esatte per centrare perfettamente le immagini nelle celle
- CLEANUP AUTOMATICO: Elimina tutti i file temporanei (Excel e immagini) dopo l'elaborazione
- Ottimizza immagini con Sharp/Jimp (120x120px, JPEG 90%)
- Crea Excel con ExcelJS: 4 colonne (SKU, Description, Img00, Img04)
- Dimensioni celle: larghezza 18-30 unitร , altezza 75 punti
- CENTRATURA PERFETTA IMMAGINI: Utilizza coordinate esatte per centratura perfetta
- Intestazioni in grassetto, righe con altezza fissa
- Salva Excel su Storage:
Orders/{orderId}/Orders-orderid-report.xlsx - Genera token UUID per accesso pubblico
- CLEANUP AUTOMATICO: Elimina tutti i file temporanei (Excel e immagini) dopo l'elaborazione
- CLEANUP AUTOMATICO: Elimina tutti i file temporanei (Excel e immagini) dopo l'elaborazione
7. GESTIONE ERRORI API MIGLIORATAโ
- NUOVA LOGICA: Gli errori di immagini non causano piรน il fallimento completo dell'ordine
- Rileva errori durante le chiamate API (JSON e immagini)
- ERRORI JSON: Causano ancora il fallimento dell'ordine (status "error") - sono critici
- ERRORI IMMAGINI: Causano solo il fallimento del singolo SKU, l'ordine continua l'elaborazione
- Aggiunge il campo "status" con valore "Failed - API json/images" SOLO ai singoli SKU con errori
- Lo status dell'ordine rimane "processing_addition" e viene aggiornato a "completed" alla fine
- GESTIONE SPECIFICA HTTP 410 (Gone):
- L'errore 410 indica che l'immagine non รจ piรน disponibile sul server Safilo
- Non viene considerato un errore critico del sistema, ma solo un'indisponibilitร della risorsa
- Il processamento continua normalmente per gli altri SKU
- Le statistiche distinguono tra errori tecnici (failed) e immagini non disponibili (unavailable)
- Il report Excel viene generato comunque, con celle vuote per le immagini non disponibili
- TIPI DI ERRORE TRACCIATI:
- JSON_API_ERROR: Errori critici durante il download JSON (causano fallimento ordine)
- IMAGE_API_ERROR: Errori non critici download immagini (solo SKU singolo)
- IMAGE_NOT_AVAILABLE: Immagini non piรน disponibili (HTTP 410)
- IMAGE_PROCESSING_ERROR: Errori non critici elaborazione immagini
- MISSING_IMAGE_PARAMS: Parametri immagine mancanti nei dati JSON (non critici)
- BATCH_PROCESSING_ERROR: Errori durante elaborazione batch
- EXCEL_GENERATION_ERROR: Errori durante generazione report Excel
- ORDER_UPDATE_ERROR: Errori durante aggiornamento ordine
- GENERAL_ERROR: Errori generali non categorizzati
8. INVIO AUTOMATICO EMAIL DI RICHIESTA QUOTAZIONEโ
- MIGLIORATO: Invia automaticamente email di richiesta quotazione quando il report Excel viene generato con successo
- CONDIZIONI DI INVIO: L'email viene inviata in TUTTI questi casi:
- Elaborazione completata con successo (status "completed") E Excel generato
- Elaborazione completata con errori di immagini (status "completed") E Excel generato
- Elaborazione fallita con errori JSON critici (status "error") MA Excel generato comunque
- Errori generali durante l'elaborazione MA Excel generato prima dell'errore
- NON VIENE INVIATA: Se l'Excel non viene generato (es. nessun dato, errori critici)
- DUE EMAIL DISTINTE INVIATE:
- Email amministratori:
- Chiave template:
13ef.8598f19fbcc5adb.k1.e8a28620-50ea-11f0-9c4e-dad70ff08860.197a19bc782 - Destinatari: TUTTI gli utenti con role='Admin' dalla collezione Profiles
- Merge data: dati timestamp formattati e nome completo dell'utente ordinante
- Allegato: file Excel scaricato dall'URL di Storage e convertito in base64
- Chiave template:
- Email conferma utente:
- Chiave template:
13ef.8598f19fbcc5adb.k1.9337a850-5e23-11f0-9e15-dad70ff08860.197f8418755 - Destinatario: l'utente che ha fatto la richiesta (campo 'profile' da CatalogOrders)
- Merge data: nome completo utente (es. "Michele Telesca") o email se nome non disponibile
- Messaggio: "Hello {{profile}}, Request for quotation sent successfully!"
- Inviata subito dopo l'email agli admin per confermare la richiesta all'utente
- NON include allegati, solo conferma dell'avvenuta richiesta
- Chiave template:
- Email amministratori:
- Utilizza la funzione sendQuotationRequestEmailHttp per l'invio tramite ZeptoMail
- Gestione errori robusta: Se l'invio email fallisce, viene loggato ma non interrompe il processo
- Nessun admin trovato: L'email non viene inviata se non si trovano amministratori (errore NO_ADMIN_FOUND)
- Logging dettagliato: Traccia ogni fase dell'invio email e conteggio amministratori
9. SALVATAGGIO LINK EXCEL NEL DOCUMENTO CATALOGORDERSโ
- NUOVA FUNZIONALITร: Quando il report Excel viene generato con successo, il sistema salva automaticamente le informazioni del file direttamente nel documento CatalogOrders su Firestore
- Campo aggiunto al documento:
excelReportUrl: URL pubblico completo per il download diretto del file ExcelexcelReportFileName: Nome del file Excel generato
- Il salvataggio avviene in TUTTI i casi:
- Elaborazione completata con successo (insieme allo status "completed")
- Elaborazione completata con errori di immagini (insieme allo status "completed")
- Elaborazione fallita con errori JSON critici (insieme allo status "error")
- Errori generali durante l'elaborazione (se l'Excel รจ stato generato prima dell'errore)
- Vantaggi:
- Il frontend puรฒ recuperare facilmente il link del report direttamente dal documento dell'ordine
- Non รจ necessario ricostruire l'URL
- Il link rimane valido e accessibile anche dopo il completamento dell'elaborazione
- Archiviazione dati consistente per riferimenti futuri
Caratteristiche Tecnicheโ
- TIMEOUT: 540 secondi (9 minuti) per elaborazioni lunghe
- MEMORIA: 1GiB per gestire immagini e file Excel
- REGIONE: europe-central2 per performance ottimali
- CORS: Abilitato per chiamate da frontend
- GESTIONE ERRORI: Logging dettagliato, fallback robusti, risposta con errorDescription
- OTTIMIZZAZIONE: Chiamate parallele, cache intelligente, batch processing
- SICUREZZA: Token UUID per accesso controllato ai file
- FORMATO: Excel XLSX con immagini embedded, layout professionale
Struttura Storageโ
ARS_Library_Product_Data/
โโโ {skuCode}/
โ โโโ json/
โ โ โโโ {skuCode}.json
โ โโโ thumbnail/
โ โโโ {modelCode}_{colorCode}_{lensCode}_00.jpg
โ โโโ {modelCode}_{colorCode}_{lensCode}_04.jpg
โโโ Orders/
โโโ {orderId}/
โโโ Orders-orderid-report.xlsx
Input (Payload):โ
{
"orderId": "xq02X2a6CEFVoQtZd5Pa"
}
Parametri:
orderId(string, richiesto): ID del documento dell'ordine catalogo nella collezione 'CatalogOrders'
Output (Success):โ
{
"success": true,
"message": "Elaborazione completata: 5 nuovi JSON, 2 JSON esistenti, 0 falliti. Immagini: 8 nuove, 4 esistenti, 2 fallite (solo parziali). 1 immagini non piรน disponibili sul server (HTTP 410).",
"stats": {
"totalItems": 7,
"processedItems": 7,
"json": {
"new": 5,
"skipped": 2,
"failed": 0
},
"images": {
"new": 8,
"skipped": 4,
"failed": 2,
"unavailable": 1
},
"hasApiError": false,
"skusWithCriticalErrors": 0
},
"excelReport": {
"fileName": "Orders-xq02X2a6CEFVoQtZd5Pa-report.xlsx",
"downloadUrl": "https://firebasestorage.googleapis.com/v0/b/arshades-7e18a.appspot.com/o/Orders%2Fxq02X2a6CEFVoQtZd5Pa%2FOrders-xq02X2a6CEFVoQtZd5Pa-report.xlsx?alt=media&token=uuid-token",
"token": "uuid-token"
}
}
Proprietร della Risposta:
success(boolean): Indica se l'operazione รจ stata completata con successomessage(string): Messaggio descrittivo dei risultati dell'elaborazionestats(object): Statistiche dettagliate degli elementi elaboratitotalItems(number): Numero totale di SKU da elaborareprocessedItems(number): Numero di SKU effettivamente elaboratijson(object): Statistiche download JSON (nuovi, saltati, falliti)images(object): Statistiche download immagini (nuove, saltate, fallite, non disponibili)hasApiError(boolean): Indica se ci sono stati errori API criticiskusWithCriticalErrors(number): Numero di SKU con errori criticiskusWithImageErrors(number): Numero di SKU con errori di immagini (non critici)
hasApiError(boolean): Flag globale che indica se ci sono stati errori APIerrorDescription(string|null): Descrizione generale degli errori se si sono verificatierrorDetails(array): Array con dettagli specifici degli errori per ogni tipoexcelReport(object): Informazioni report ExcelfileName(string): Nome del file Excel generatodownloadUrl(string): URL pubblico per il download del file Exceltoken(string): Token UUID per l'accesso al file
Questo output viene restituito nella risposta HTTP (Postman, browser, curl).
Testingโ
URL (if HTTPS): http://127.0.0.1:5001/arshadesstaging/europe-central2/downloadVariantJsonsHttp
Test con Emulatore:
- Avvia l'emulatore Firebase:
firebase emulators:start --only functions - Assicurati di usare Node.js versione 20:
nvm use 20 - Test con curl:
curl -X POST "http://127.0.0.1:5001/arshadesstaging/europe-central2/downloadVariantJsonsHttp" \
-H "Content-Type: application/json" \
-d '{"orderId": "xq02X2a6CEFVoQtZd5Pa"}'
Test con Postman:
- Metodo: POST
- URL: http://127.0.0.1:5001/arshadesstaging/europe-central2/downloadVariantJsonsHttp
- Headers:
- Key:
Content-Type - Value:
application/json
- Key:
- Body: raw JSON (vedi esempi sopra)
Deploy Command:โ
firebase deploy --only functions:downloadVariantJsonsHttp
URL di Produzione:โ
downloadVariantJsonsHttp: https://europe-central2-arshades-7e18a.cloudfunctions.net/downloadVariantJsonsHttp